package paylog

import (
	"sg-backend/model/user"
	"time"
)

// 1，支出流水

type PayLog struct {
	Id           uint       `json:"id" gorm:"primarykey"`
	UserId       uint       `json:"userId"`
	User         user.User  `json:"user"`
	Money        float64    `json:"money"`
	Refund       float64    `json:"refund" gorm:"default:0"`
	RefundTime   *time.Time `json:"refundTime" gorm:"default:null"`
	Remark       string     `json:"remark" gorm:"default:null"`
	Time         *time.Time `json:"time"`
	PayTypeId    uint       `json:"payTypeId" gorm:"default:null"`
	PayType      PayType    `json:"payType" gorm:"default:null"`
	FamilyTypeId uint       `json:"familyTypeId" gorm:"default:null"`
	FamilyType   FamilyType `json:"familyType" gorm:"default:null"`
}

// TableName 设置表名称
func (PayLog) TableName() string {
	return "pay_log"
}

// 2，收入流水

type IncomeLog struct {
	Id           uint       `json:"id" gorm:"primarykey"`
	UserId       uint       `json:"userId"`
	User         user.User  `json:"user"`
	Money        float64    `json:"money"`
	Remark       string     `json:"remark" gorm:"default:null"`
	Time         *time.Time `json:"time"`
	IncomeTypeId uint       `json:"incomeTypeId" gorm:"default:null"`
	IncomeType   IncomeType `json:"incomeType" gorm:"default:null"`
}

// TableName 设置表名称
func (IncomeLog) TableName() string {
	return "income_log"
}

// 3，欠债记录

type OweLog struct {
	Id           uint       `json:"id" gorm:"primarykey"`
	UserId       uint       `json:"userId"`
	User         user.User  `json:"user"`
	ToWho        string     `json:"toWho"`
	OweTime      *time.Time `json:"ownTime"`
	OweMoney     float64    `json:"ownMoney"`
	PaybackMoney float64    `json:"paybackMoney"`
	Done         bool       `json:"done" gorm:"default:false"`
	Remark       string     `json:"remark" gorm:"default:null"`
}

// TableName 设置表名称
func (OweLog) TableName() string {
	return "owe_log"
}

// 4，借款记录

type LendLog struct {
	Id           uint       `json:"id" gorm:"primarykey"`
	UserId       uint       `json:"userId"`
	User         user.User  `json:"user"`
	ToWho        string     `json:"toWho"`
	OweTime      *time.Time `json:"oweTime"`
	OweMoney     float64    `json:"oweMoney"`
	PaybackMoney float64    `json:"paybackMoney"`
	Done         bool       `json:"done" gorm:"default:false"`
	Remark       string     `json:"remark" gorm:"default:null"`
}

// TableName 设置表名称
func (LendLog) TableName() string {
	return "lend_log"
}

// 5, 借出记录中的还钱明细

type LendPaybackLog struct {
	Id        uint       `json:"id" gorm:"primarykey"`
	LendLogId uint       `json:"lendLogId"`
	LendLog   LendLog    `json:"lendLog"`
	Money     float64    `json:"money"`
	Time      *time.Time `json:"time"`
	Remark    string     `json:"remark" gorm:"default:null"`
}

// TableName 设置表名称
func (LendPaybackLog) TableName() string {
	return "lend_log_payback"
}

// 6, 借入记录中的还钱明细

type OwePaybackLog struct {
	Id       uint       `json:"id" gorm:"primarykey"`
	OweLogId uint       `json:"oweLogId"`
	OweLog   OweLog     `json:"oweLog"`
	Money    float64    `json:"money"`
	Time     *time.Time `json:"time"`
	Remark   string     `json:"remark" gorm:"default:null"`
}

// TableName 设置表名称
func (OwePaybackLog) TableName() string {
	return "owe_log_payback"
}

// 7，收入分类

type IncomeType struct {
	Id     uint      `json:"id" gorm:"primarykey"`
	Name   string    `json:"name"`
	Icon   string    `json:"icon"`
	UserId uint      `json:"userId"`
	User   user.User `json:"user"`
}

func (IncomeType) TableName() string {
	return "income_type"
}

// 8，收入分类

type PayType struct {
	Id     uint      `json:"id" gorm:"primarykey"`
	Name   string    `json:"name"`
	Icon   string    `json:"icon"`
	UserId uint      `json:"userId"`
	User   user.User `json:"user"`
}

func (PayType) TableName() string {
	return "pay_type"
}

// 9，成员分类

type FamilyType struct {
	Id     uint      `json:"id" gorm:"primarykey"`
	Name   string    `json:"name"`
	Icon   string    `json:"icon"`
	UserId uint      `json:"userId"`
	User   user.User `json:"user"`
}

func (FamilyType) TableName() string {
	return "family_type"
}
